<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"  
      xmlns:pe="http://primefaces.org/ui/extensions"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>
            <h:outputText value="Sistema de Seguridad de Aplicaiones - SSA" />
        </title>
    </h:head>
    <h:body>
        <ui:composition template="/WEB-INF/facelets/templates/mainLayout.xhtml">            
            <ui:define name="menuPrincipal">
                <ui:include src="/frmMenu.xhtml"/>
            </ui:define>
            <ui:define name="content" >
                <p:blockUI block=":frmGestionarUsuario:panUsuarios" trigger=":frmGestionarUsuario:buscarButton" widgetVar="blkPanel">
                    Espere mientras se cargan los datos<br /> 
                    <p:graphicImage value="/resource/images/loading.gif" style="width: 65px; height: 50px;"/>
                </p:blockUI>
                <script type="text/javascript">
                    function habMask() {
                        $('.hasDatepicker').mask("99/99/9999");
                    }
                </script>
                <h:form id="frmGestionarUsuario" onkeypress="if (event.keyCode == 13) return false;">
                    <p:growl showSummary="false" showDetail="true" id="msjFiltro"/>
                    <div style="margin-left: 15px;margin-top: 5px; height: 20px;vertical-align: middle;">
                        <span style="font-family: Arial,sans-serif;font-size: 11px !important;"> Maestros \ <a href="usuarios.jsf" >Usuarios</a></span>
                    </div>
                    <p:panel id="panUsuarios" header="Administración de Usuarios" >
                        <table style="width:100%;" >
                            <thead>
                                <tr>
                                    <td>
                                        <table width="100%" cellpadding="5" cellspacing="8" style="width: 1000px;">
                                            <tr>
                                                <td style="width: 100px;">
                                                    <h:outputText value="Unidad Territorial :"/> 
                                                </td>
                                                <td style="width: 300px;">
                                                    <h:inputHidden id="txtIdUnidadTerritorial" value="#{(usuarioController.selectedZonal.codZonal!=null?usuarioController.selectedZonal.codZonal:'')}"/>
                                                    <p:inputText id="txtUnidadTerritorial" value="#{(usuarioController.selectedZonal.txtZonal!=null?usuarioController.selectedZonal.txtZonal:'')}" style="width: 260px" maxlength="0">
                                                    </p:inputText>
                                                    <p:commandButton icon="ui-icon-search"  onclick="buscaUnidadTerritorial.show()"
                                                                     actionListener="#{usuarioController.limpiarBusquedaUnidadTerritorial}"
                                                                     update=":frmListarUnidadTerritorial:txtUnidadTerritorial,:frmListarUnidadTerritorial:grdListadoZonal" 
                                                                     process="@this">
                                                    </p:commandButton>
                                                </td>
                                                <td style="width: 120px;">
                                                    <h:outputText value="Unidad Organizacional :"/> 
                                                </td>
                                                <td>
                                                    <h:inputHidden id="txtIdUnidadOrganizacional" value="#{(usuarioController.selectedUnidadOrganizacional.codUnidad!=null?usuarioController.selectedUnidadOrganizacional.codUnidad:'')}"/>
                                                    <p:inputText id="txtUnidadOrganizacional" value="#{(usuarioController.selectedUnidadOrganizacional.txtUnidad!=null?usuarioController.selectedUnidadOrganizacional.txtUnidad:'')}" 
                                                                 style="width: 260px;" maxlength="0" 
                                                                 disabled="#{(usuarioController.selectedZonal.codZonal != '99')}">
                                                        <pe:keyFilter regEx="/[A-Z_Ñ ]/i"/>
                                                    </p:inputText>
                                                    <p:commandButton icon="ui-icon-search" onclick="buscaUnidadOrganizacional.show()"
                                                                     update=":frmListarUnidadOrganizacional:txtUnidadOrganizacional,:frmListarUnidadOrganizacional:grdListadoUnidadOrganizacional" 
                                                                     process="@this"
                                                                     actionListener="#{usuarioController.limpiarBusquedaUnidadOrganizacional}"
                                                                     disabled="#{(usuarioController.selectedZonal.codZonal != '99')}">
                                                    </p:commandButton>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td>
                                                    <h:outputText value="Usuario :"/> 
                                                </td>
                                                <td colspan="3" >
                                                    <p:inputText id="txtCodUsuario" value="#{usuarioController.codUsuario}" style="width: 260px;" maxlength="200">
                                                    </p:inputText>
                                                    <p:commandButton process="@this,txtCodUsuario" value="Buscar" id="buscarButton"
                                                                     update=":frmGestionarUsuario:grdUsuarios, msjFiltro" 
                                                                     actionListener="#{usuarioController.searchUsuario}"/> 
                                                    <p:commandButton style="margin-right: 5px;" value="Limpiar" 
                                                                     actionListener="#{usuarioController.clean}" 
                                                                     update=":frmGestionarUsuario,msjFiltro"
                                                                     process="@this">
                                                    </p:commandButton>
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                </tr>
                            </thead>  
                            <tbody>
                                <tr>
                                    <td></td>
                                </tr>
                                <tr>
                                    <td>
                                        <p:menubar style="width: 99%;" id="menuOpciones">
                                            <p:menuitem value="Nuevo" icon="ui-icon-person" process="@this"
                                                        actionListener="#{usuarioController.nuevo}"
                                                        update=":dlgDetalleUsuarios">
                                            </p:menuitem>
                                            
                                            <p:menuitem value="Nuevo Externo" icon="ui-icon-person" process="@this"
                                                        actionListener="#{usuarioController.nuevoExterno}"
                                                        update=":dlgDetalleUsuarios">
                                            </p:menuitem>
                                            
                                            <p:menuitem value="Modificar" icon="ui-icon-pencil" process="@this, grdUsuarios"
                                                        actionListener="#{usuarioController.verDetallesUsuario}" 
                                                        update=":dlgDetalleUsuarios, :frmDetalleUsuario, msjFiltro" >
                                            </p:menuitem>
                                            <p:menuitem value="Reiniciar Contraseña" icon="ui-icon-wrench" process="@this, grdUsuarios"
                                                        actionListener="#{usuarioController.validaReinicioPassword}" update=":dlgReiniciarContra, msjFiltro" >
                                            </p:menuitem>
                                            <p:menuitem value="Asignar Permisos" icon="ui-icon-check" process="@this, grdUsuarios"
                                                        actionListener="#{usuarioController.validarAsignarPermisos}" 
                                                        update=":dlgGestionarPermisos, :frmGestionarPermisos, msjFiltro" >
                                            </p:menuitem>
                                            
                                            <p:menuitem value="Asignar Instancia" icon="ui-icon-check" process="@this, grdUsuarios"
                                                        actionListener="#{usuarioController.validarAsignarInstancias}" 
                                                        update=":dlgAsignarInstancias, :frmAsignarInstancia, msjFiltro" >
                                            </p:menuitem>
                                        </p:menubar>
                                    </td>
                        </tr>
                        <tr>
                            <td>
                                <div style="height: 420px; overflow-y: auto;overflow-x:hidden;">
                                    <p:dataTable id="grdUsuarios" var="item" 
                                                 value="#{usuarioController.lstUsuarios}" 
                                                 rowKey="#{item.id}" 
                                                 selection="#{usuarioController.selectedUsuario}" 
                                                 selectionMode="single" paginator="true" rows="10"
                                                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                                                 rowsPerPageTemplate="5,10,15,20"
                                                 emptyMessage="Filtro sin resultados. Ingrese un filtro para listar usuarios."
                                                 rowIndexVar="index" >
                                        <p:column width="30" style="text-align: center; width: 30px" >
                                            <f:facet name="header">
                                                <h:outputText value="N°"/>
                                            </f:facet>
                                            <h:outputText value="#{index+1}"/>
                                        </p:column>
                                        <p:column width="120" style="text-align: left; width: 120px" >
                                            <f:facet name="header">
                                                <h:outputText value="Código de usuario"/>
                                            </f:facet>
                                            <div style="text-align: left;" > 
                                                <h:outputText value="#{item.codUsuario}" />
                                            </div>          
                                        </p:column>
                                        <p:column width="250" style="text-align: left; width: 250px;">
                                            <f:facet name="header">
                                                <h:outputText value="Nombres"/>
                                            </f:facet>
                                            <h:outputText value="#{item.nombreCompleto}" />
                                        </p:column>
                                        <p:column width="150" style="text-align: center; width: 150px">
                                            <f:facet name="header">
                                                <h:outputText value="Unidad Territorial"/>
                                            </f:facet>
                                            <h:outputText value="#{usuarioController.mapaUnidadTerritorial[item.codZonal]}" />
                                        </p:column>
                                        <p:column width="150" style="text-align: center; width: 150px">
                                            <f:facet name="header">
                                                <h:outputText value="Tipo de Usuario"/>
                                            </f:facet>                                                
                                            <h:outputText value="#{usuarioController.mapaTipoUsuario[item.tipUsuario]}" />
                                        </p:column>
                                        <p:column width="50" style="text-align: center; width: 50px">
                                            <f:facet name="header">
                                                <h:outputText value="Estado"/>
                                            </f:facet>
                                            <p:selectBooleanCheckbox disabled="true" value="#{item.flgActivo == '1'}"/>
                                        </p:column>
                                        <p:column width="50" style="text-align: center; width: 50px">
                                            <f:facet name="header">
                                                <h:outputText value="Bloqueo"/>
                                            </f:facet>
                                            <p:selectBooleanCheckbox disabled="true" value="#{item.flgBloqueado == '1'}"/>
                                        </p:column>                                        
                                        <p:column width="60" style="text-align: center; width: 60px">
                                            <f:facet name="header">
                                                <h:outputText value="Caducidad"/>
                                            </f:facet>
                                            <p:selectBooleanCheckbox disabled="true" value="#{item.flgCaducidadClave == '1'}"/>
                                        </p:column>
                                    </p:dataTable>
                                </div>
                            </td>
                        </tr>
                        </tbody>
                        </table>
                    </p:panel>
                </h:form>
                
                <p:dialog id="dlgDetalleUsuarios" widgetVar="editarContenidoUsuarios" header="#{usuarioController.esNuevo?'Registro de Usuario':'Modificar Usuario'}" 
                          width="550" height="540" showEffect="clip" hideEffect="fold" modal="true" resizable="false">
                    <ui:include src="DetalleUsuario.xhtml"/>
                    <p:ajax event="close" update=":frmGestionarUsuario:grdUsuarios" listener="#{usuarioController.searchUsuario}"/> 
                </p:dialog>
                
                <p:dialog id="dlgReiniciarContra" widgetVar="msjReiniciarContra" header="Reiniciar Contraseña" closable="false" modal="true" resizable="false" >
                    <p:blockUI block=":frmReiniciarContra:pnlReiniciarContra" widgetVar="blkReiniciarContra">
                        Espere mientras se cargan los datos<br /> 
                        <p:graphicImage value="/resource/images/loading.gif" style="width: 65px; height: 50px;"/>
                    </p:blockUI>
                    <h:form id="frmReiniciarContra">
                        <p:panel id="pnlReiniciarContra" style="border: 2px" >
                            <table>
                                <tbody>
                                    <tr>
                                        <td style="text-align: center;">
                                            <span class="ui-icon ui-icon-alert ui-confirm-dialog-severity" style="margin-bottom: 20px;"></span>
                                            <h:outputLabel style="font-size: 10pt;" value="¿Está seguro de reiniciar la contraseña del usuario"/><br/>
                                            <h:outputLabel style="font-size: 9pt;" value="#{usuarioController.selectedUsuario.txtNombres} #{usuarioController.selectedUsuario.txtApellidoPaterno} #{usuarioController.selectedUsuario.txtApellidoMaterno}?"/>
                                        </td>                       
                                    </tr>                    
                                    <tr>
                                        <td><p:messages showDetail="true" /></td>                        
                                    </tr>
                                </tbody>   
                                <tfoot style="text-align: center;" >
                                    <tr></tr><tr></tr>
                                    <tr>
                                        <td>                            
                                            <p:commandButton value="Sí" onstart="blkReiniciarContra.show()" oncomplete="blkReiniciarContra.hide()"
                                                             update=":dlgReiniciarContraOK, :frmReiniciarContraOK" 
                                                             actionListener="#{usuarioController.reiniciarPassword}" />
                                            <p:commandButton value="No" process="@this" onclick="msjReiniciarContra.hide()"/>
                                        </td>
                                    </tr>
                                </tfoot>
                            </table>      
                        </p:panel>
                    </h:form>
                </p:dialog>

                <p:dialog id="dlgReiniciarContraOK" widgetVar="msjConfimaReinicioOK" header="Generación de Contraseña Temporal" closable="false" 
                          modal="true" resizable="false" width="500" >
                    <h:form id="frmReiniciarContraOK" >
                        <p:panel style="border: 2px" >
                            <table style="width: 450px;" >
                                <tbody>
                                    <tr>
                                        <td><span class="ui-icon ui-icon-alert ui-confirm-dialog-severity" style="margin-bottom: 30px;"></span>
                                            <h:outputLabel style="font-size: 10pt;" value="Se reinicio la contraseña del usuario 
                                                           #{usuarioController.selectedUsuario.txtApellidoPaterno} #{usuarioController.selectedUsuario.txtApellidoMaterno} 
                                                           #{usuarioController.selectedUsuario.txtNombres} satisfactoriamente y se la ha generado una contraseña temporal, 
                                                           la cual ha sido enviada a el(los) correo(s) registrado(s) en nuestra base de datos"/><br/>
                                            <div style="text-align: center;">
                                                <h:commandLink  style="font-size: 10pt;" value="#{usuarioController.selectedUsuario.txtCorreoElectronico1}"></h:commandLink><br/>
                                                <h:commandLink  style="font-size: 10pt;" value="#{usuarioController.selectedUsuario.txtCorreoElectronico2}"></h:commandLink>
                                            </div>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td><p:messages showDetail="true" /></td>
                                    </tr>
                                </tbody>   
                                <tfoot style="text-align: center;" >
                                    <tr></tr><tr></tr>
                                    <tr>
                                        <td>                            
                                            <p:commandButton value="Ok" process="@this" onclick="msjConfimaReinicioOK.hide()"/>
                                        </td>
                                    </tr>
                                </tfoot>
                            </table>      
                        </p:panel>
                    </h:form>
                </p:dialog>
                
                <p:dialog id="dlgBuscaUnidadTerritorial" modal="true" header="Búsqueda de Unidad Territorial" 
                          widgetVar="buscaUnidadTerritorial" resizable="false"
                          width="410"  height="320"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="frmListarUnidadTerritorial.xhtml" />
                    <p:ajax event="close" update="frmListarUnidadTerritorial, :frmGestionarUsuario"/> 
                </p:dialog>
                
                <p:dialog id="dlgBuscaUnidadTerritorialUsuario" modal="true" header="Búsqueda de Unidad Territorial" 
                          widgetVar="buscaUnidadTerritorialUsuario" resizable="false"
                          width="410"  height="320"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="frmListarUnidadTerritorialUsuario.xhtml" /> 
                    <p:ajax event="close" update="frmListarUnidadTerritorialUsuario, :frmDetalleUsuario:txtDetalleUnidadTerritorial"/> 
                </p:dialog>
                
                 <p:dialog id="dlgBuscaPersonas" modal="true" header="Búsqueda de Personal" 
                          widgetVar="buscaPersonal" resizable="false"
                          width="680"  height="340"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="frmListarPersonal.xhtml" />
                    
                </p:dialog>
                <p:dialog id="dlgBuscaUnidadOrganizacional" modal="true" header="Búsqueda de Unidad Organizacional" 
                          widgetVar="buscaUnidadOrganizacional" resizable="false"
                          width="410"  height="320"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="frmListarUnidadOrganizacional.xhtml" />
                    <p:ajax event="close" update="frmListarUnidadOrganizacional, :frmGestionarUsuario"/> 
                </p:dialog>
                
                <p:dialog id="dlgGestionarPermisos" modal="true" header="Asignar Permisos" 
                          widgetVar="asignaPermisos" resizable="false"
                          width="1160"  height="600"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="asignaPermisos.xhtml" />
                    <p:ajax event="close" update=":frmGestionarUsuario:grdUsuarios"/> 
                </p:dialog>
                
                <p:dialog id="dlgAsignarPerfil" modal="true" header="Asignar Perfil" 
                          widgetVar="asignaPerfil" resizable="false"
                          width="1000" height="465"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="asignarPerfil.xhtml" />
                    <p:ajax event="close" update=":frmGestionarPermisos:menuOpciones, :frmGestionarPermisos:pnlPerAsignados, :frmGestionarPermisos:pnlOpcAsignadas, :frmGestionarPermisos:pnlAccAsignadas"
                            oncomplete="wPerAsignados.expand();wAccAsignadas.collapse();"/> 
                </p:dialog>
                
                <p:dialog id="dlgAsignarOpciones" modal="true" header="Asignar Opciones" 
                          widgetVar="asignaOpcion" resizable="false"
                          width="1000" height="490"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="asignarOpciones.xhtml" />
                    <p:ajax event="close" listener="#{usuarioController.limpiaAccionesDeOpcionDelPerfil}" update=":frmGestionarPermisos:menuOpciones, :frmGestionarPermisos:pnlOpcAsignadas, :frmGestionarPermisos:pnlAccAsignadas"/> 
                </p:dialog>
                
                <p:dialog id="dlgAsignarAcciones" widgetVar="asignaAccion" modal="true" header="Personalizar Acciones de la Opción" resizable="false"
                           width="1130" height="380" showEffect="clip" hideEffect="fold">
                     <ui:include src="asignarAcciones.xhtml"/>
                 </p:dialog>
                
                <p:dialog id="dlgDetallePerfil" widgetVar="detallePerfil" header="Personalizar Perfil" 
                          width="1100" height="305" showEffect="clip" hideEffect="fold" modal="true" resizable="false"
                          onShow="habMask();">
                    <ui:include src="DetallePerfil.xhtml"/>
                    <p:ajax event="close" update=":frmGestionarPermisos:menuOpciones, :frmGestionarPermisos:pnlPerAsignados, :frmGestionarPermisos:pnlOpcAsignadas, :frmGestionarPermisos:pnlAccAsignadas"/>
                </p:dialog>
                
                <p:dialog id="dlgDetalleAutorizacion" widgetVar="detalleAutorizacion" header="Personalizar Acción" 
                          width="900" height="280" showEffect="clip" hideEffect="fold" modal="true" resizable="false"
                          onShow="habMask();">
                    <ui:include src="DetalleAutorizacion.xhtml"/>
                    <p:ajax event="close" listener="#{usuarioController.listarAutorizaciones}" 
                            update=":frmGestionarAcciones:grdAcciones, :frmGestionarPermisos:grdAccionesAsignadas"
                            oncomplete="wAccAsignadas.expand()"/>
                </p:dialog>
                
                <p:dialog id="dlgDetalleHorarioPerfil" widgetVar="detalleHorarioPerfil" header="Personalizar Horario del Perfil" 
                          width="470" height="300" showEffect="clip" hideEffect="fold" modal="true" resizable="false">
                    <ui:include src="DetalleHorarioPerfil.xhtml"/>
                    <p:ajax event="close" update=":frmGestionarPermisos:pnlPerAsignados"/> 
                </p:dialog>
                
                <p:dialog id="dlgAsignarInstancias" modal="true" header="Asignar Instancias" 
                          widgetVar="asignaInstancias" resizable="false"
                          width="640" height="480"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="asignarInstancia.xhtml" />
                </p:dialog>
                
                <p:dialog id="dlgVerOpcionesDeUsuario" modal="true" header="Estructura de Opciones Asignadas" 
                          widgetVar="verOpcionesDeUsuario" resizable="false"
                          width="500" height="440"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="VerOpcionesDeUsuario.xhtml" />
                </p:dialog>
            </ui:define>
        </ui:composition>
    </h:body>
</html>